package com.suning.sawp.intf.promotion;

import java.util.List;

import org.apache.poi.ss.usermodel.Workbook;

import com.suning.sawp.dto.common.QueryResult;
import com.suning.sawp.dto.common.ReturnMsg;
import com.suning.sawp.dto.promotion.HorizProActivityShowDto;
import com.suning.sawp.dto.promotion.HorizProRecordShowDto;
import com.suning.sawp.dto.promotion.HorizProRtn;
import com.suning.sawp.dto.promotion.QueryHorActBean;
import com.suning.sawp.dto.promotion.StatisticsHorCoupon;
import com.suning.sawp.dto.promotion.ValidHorizProCouponRecord;
import com.suning.sawp.po.promotion.HorizProActivity;

/**
 * 
 * 异业券服务接口<br> 
 * 〈功能详细描述〉
 *
 * @author 14062606
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface HorizPromotionService {
	
	/**
     * 
     * 功能描述: 根据异业券号查询促销活动名称<br>
     * 〈功能详细描述〉
     *
     * @param horizId 异业券号
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
	ReturnMsg<HorizProRtn> queryHorizProActName(String horizId);
	
	/**
     * 
     * 功能描述: 异业券验券<br>
     * 〈功能详细描述〉
     *
     * @param mobile 手机号
     * @param horizId 异业券号
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
	ReturnMsg<String> validateHorizCoupon(String mobile, String horizId, String staffId);
	
	/**
	 * 
	 * 功能描述: 查询某店员的验券（异业券）记录<br>
	 * 〈功能详细描述〉
	 *
	 * @param staffId
	 * @param startIndex
	 * @param limit
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	QueryResult<ValidHorizProCouponRecord> queryHorizProCouponByStaffId(String staffId, int startIndex, int limit);
	
	/**
	 * 
	 * 功能描述: 查询可使用券<br>
	 * 〈功能详细描述〉
	 *
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<HorizProActivityShowDto> queryAvailableHorizActivity();
	
	/**
	 * 
	 * 功能描述: 查询异业券导入记录<br>
	 * 〈功能详细描述〉
	 *
	 * @param activityId
	 * @param staffId
	 * @param startIndex
	 * @param limit
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<QueryResult<HorizProRecordShowDto>> queryHorizProRecords(String activityId, String staffId, int startIndex, int limit);
	
	/**
	 * 
	 * 功能描述: 根据导入批次码删除异业优惠券<br>
	 * 〈功能详细描述〉
	 *
	 * @param importBatchCode
	 * @param activityId
	 * @param staffId 操作人工号
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	ReturnMsg<String> delHorizProCouponByBatchCode(String importBatchCode
	        , String activityId, String staffId);
	
	/**
     * 
     * 功能描述: 查询异业促销活动列表<br>
     * 〈功能详细描述〉
     *
      * @param activityName
     * @param proActivityId
     * @param startTime
     * @param endTime
     * @param currIndex
     * @param pageSize
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<QueryResult<QueryHorActBean>> queryHorizActivity(String activityName, String proActivityId, 
            String startTime, String endTime, int currIndex, int pageSize, String staffId);
    
    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param optCode 1-启用；0-停用
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<String> updateActivityStatus(String activityId, String optCode, String staffId);
    
    /**
     * 
     * 功能描述: 校验已经验过券的记录数是否超过约定值<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<String> checkHorizProCouponCount(String startTime, String endTime);
    
    /**
     * 
     * 功能描述: 导出已经验过券的异业券<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Workbook exportValidHorizCoupon(String startTime, String endTime);
    
    /**
     * 根据活动ID查询活动信息
     * @param activityId
     * @return
     */
    HorizProActivity queryHorizProActivityByActivityId(String activityId);
    
    /**
     * 批量生成异业券
     * @param activityId
     * @param count
     */
    void batchCreateDifferentIndustryCertificate(String activityId, Integer count);
    
    /**
     * 生成券文件失败后
     * 重试尝试生成券文件
     * @param activityId
     */
    void retryCreateCouponFile(String activityId);
    
    /**
     * 
     * 功能描述: 统计异业券发放情况<br>
     * 〈功能详细描述〉
     *
     * @param activityName
     * @param startTime
     * @param endTime
     * @param regionCode
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<QueryResult<StatisticsHorCoupon>> statisHorCoupon(String activityName,String startTime,String endTime,String regionCode,String storeCode,int startIndex,int limit);
    
    /**
     * 
     * 功能描述: 导出已经验过券的异业券<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @param activityName
     * @param regionCode
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Workbook exportHorCouponStat(String activityName,String startTime,String endTime,String regionCode,String storeCode);
    
    /**
     * 
     * 功能描述: 校验导出异业券统计是否超过最大值<br>
     * 〈功能详细描述〉
     *
     * @param startTime
     * @param endTime
     * @param activityName
     * @param regionCode
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<String> checkCouponStatExport(String activityName,String startTime,String endTime,String regionCode,String storeCode);
}